#include <iostream>
#include <future>
#include<thread>
int Add(int num1, int num2)
{
  std::cout << "Add\n";
  return num1 + num2;
}

int main()
{

    //1 封装
    auto task=std::make_shared<std::packaged_task<int(int,int)>>(Add);
    //2 获取任务包关联的对象
    std::future<int> res=task->get_future();
    std::thread thr([task](){
        (*task)(11,22); 
    }
);


    // std::thread thr([task]{

    // })//这个packaged_task的函数没有拷贝函数,也不要传这个&task这个packaged_task是一个临时类可以用智能指针
    //执行任务
   // task(11,12);
    //3 获取
    std::cout<<res.get()<<std::endl;
    thr.join();
    return 0;
}